package com.yan.yanbi.bizmq;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

/**
 * 消费者代码
 *
 * @author 86177
 */
@Component
@Slf4j
public class RabbitMqMessageConsumer {

    /**
     * 指定程序监听的消息队列和确认机制
     * @param message 确认接收的消息
     * @param channel 消息所在的通道，可以通过该通道与RabbitMQ交互，如手动确认拒绝消息
     * @param deliveryTag 消息的投递标签，用于唯一标识一条消息
     */

    //使用RabbitListener注解指定要监听的队列名称为demo_queue，设置消息的确认机制为手动
//    @SneakyThrows
//    @RabbitListener(queues = {"demo_queue"}, ackMode = "MANUAL")
//    //@Header(AmqpHeaders.DELIVERY_TAG) 是一个方法参数注解，用于从消息头中获取投递标签
//    private void receiveMessage(String message, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag){
//      log.info("receiveMessage = {}",message);
//        try {
//            // 手动确认消息，向RabbitMq发送确认消息
//            channel.basicAck(deliveryTag,false);
//        } catch (IOException e) {
//            throw new RuntimeException(e);
//        }
//    }
}
